//
//  XFSocket.h
//  TestSocket
//
//  Created by ukongm on 17/1/13.
//  Copyright © 2017年 ukongm. All rights reserved.
//

#import <Foundation/Foundation.h>

@class XFSocket;

typedef NS_ENUM(NSInteger , XFSocketConnectStatus) {
    
    XFSocketConnectStatusConnect = 0xbbb, //链接状态
    XFSocketConnectStatusNoConnect, //没有链接状态

};

@protocol XFSocketDelegate <NSObject>

@optional


/**
 链接成功

 @param socket 链接对象
 */
- (void)socket:(XFSocket*)socket connectSuccessForStatus:(XFSocketConnectStatus)status;

/**
 连接失败
 
 @param socket 链接对象
 */
- (void)socket:(XFSocket*)socket connectFailForStatus:(XFSocketConnectStatus)status;

/**
 连接断开
 
 @param socket 链接对象
 */
- (void)socket:(XFSocket*)socket connectEndForStatus:(XFSocketConnectStatus)status;


/**
 接受数据

 @param data   数据
 @param socket 对应的socket对象
 */
- (void)socket:(XFSocket*)socket accpetForData:(NSData*)data;

/**
 发送失败

 @param socket 链接对象
 @param data   发送的数据
 */
- (void)socket:(XFSocket*)socket sendFailForData:(NSData*)data;

@end

@interface XFSocket : NSObject

/** 链接状态 */
@property(nonatomic,assign,readonly)XFSocketConnectStatus status;

/**
 连接服务器socket

 @param adress 地址
 @param port   端口
 @param delegate 代理对象
 */
- (void)connectForAdress:(NSString*)adress andPort:(int)port andDelegate:(id<XFSocketDelegate>)delegate;


/**
 发送数据到服务器socket

 @param data 数据
 */
- (void)sendData:(NSData*)data;


/**
 断开连接
 */
- (void)close;

/**
 重新链接
 */
- (void)reset;

@end
